//axios配置
import axios from 'axios'
import auth from '@/utils/auth'
import router from '@/router/index'
import JSONbig from 'json-bigint'

//进行配置：
//1.配置基准地址
axios.defaults.baseURL = "http://ttapi.research.itcast.cn/mp/v1_0/"
//请求头配置
//axios.defaults.headers.Authorization = `Bearer ${auth.getUser().token}`

//2.请求拦截器
axios.interceptors.request.use(config=> {
    //给请求头追加token(每次请求前都会做，拿到存储的token)
    config.headers.Authorization = `Bearer ${auth.getUser().token}`
    return config
},e => Promise.reject(e))

//3.改json转换方式
axios.defaults.transformResponse = [data => {
    //通过json-bigint对数据进行处理，处理后返回即可
    //data理想情况是json数据，后台做删除的时候没响应 data === null 的
    try{
        return JSONbig.parse(data)
    } catch (e){
        return data
    }
    
}]

//3.响应拦截器
axios.interceptors.response.use( res=> res, err =>{
    //判断响应状态玛是401，清除本地用户信息，跳转支登录页面
    console.dir(err);
    //保证response存在 并且状态是401，才清除信息
    if(err.response && err.response.status === 401){
        auth.delUser()
        //1.编程式导航 跳转路由 this.$router.push('/login) 此时的this不是vue实例
        //2.跳转路由：$router 其实就是我们自己初始化的router 实例，src/router/index.js导出
        //3.此模块导入自己定义的路由router,使用路由实例调用push函数即可
        router.push('/login')
    
    }
    return Promise.reject(err)
})



//导出
export default axios